<html>

<head>
<title>simpleRTJ - Readme</title>
</head>

<body bgcolor="#FFFFFF">

<table border="0" cellpadding="2" width="100%">
  <tr>
    <td width="100%" bgcolor="#FEFFE1"><i><font color="#0000FF" face="Verdana"><big><big><big>simple</big></big></big></font></i><big><big><big><font color="#0000FF" face="Verdana"><b>RTJ</b>&nbsp;<br>
      </font></big></big></big><font face="Verdana" color="#000000" size="3"><b>A
      small footprint Java Virtual Machine for embedded and consumer devices.</b></font></td>
  </tr>
  <tr>
    <td width="100%" align="left">

<p align="left"><font face="Verdana"><strong>&nbsp;</strong> <br>
Version: 1.4.2</font></p>

<p align="left"><font face="Verdana"><strong>22 September 2003</strong></font></p>

<p align="left"><font face="Verdana"><small>Copyright&nbsp;&copy; 2000-2003, <b>RTJ </b><b><i>Computing
</i>Pty. Ltd.</b><i> </i>All rights reserved.</small></font></p>

    </td>
  </tr>
</table>

<hr>

<blockquote>

<p><font face="Verdana">This file contains up to date information related the latest
release of the <b><i>simple</i>RTJ </b>software. Please read the following sections carefully as they may
answer many of your installation and usage questions.</font></p>

</blockquote>

<p>&nbsp;</p>

<table border="0" cellpadding="2" width="100%">
  <tr>
    <td width="100%" bgcolor="#CCFFFF"><b><font face="Verdana">Licensing <i>simple</i>RTJ</font></b></td>
  </tr>
</table>

<blockquote>
  <p><font face="Verdana">Please note that all source code
provided with this release of <b><i>simple</i>RTJ </b>is available free of
  charge for evaluation, educational and private use under the terms and
  conditions of RTJ Computing <a href="non-commercial-license.terms"> non-commercial source code license</a>
  agreement.&nbsp;The only exceptions are <b>java.lang,</b> <b>java.util</b>
  and <b>java.io </b>packages that are provided under the <a href="http://www.gnu.org/copyleft/gpl.html">GNU
  Public License</a> (GPL).</font></p>

  <p><font face="Verdana">If you intend to use the </font><font face="Verdana"><b><i>simple</i>RTJ</b>
  for commercial purposes you will need to purchase a commercial license for this product. Please contact
  us at <a href="mailto:licensing@rtjcom.com?Subject=Licensing information">licensing@rtjcom.com</a>
  for further details.</font></p>

  <p><font face="Verdana">This evaluation release of the <b><i>simple</i>RTJ</b>
  limits the size of the Java application binary images.<font size="3">
  Additionally, the sources for remote debugging are not provided with the
  evaluation version.</font></font></p>

  <p><font size="3" face="Verdana">
  Customers who purchase commercial license for the <i>simple</i><b>RTJ </b>will
  receive:</font></p>

  <ul>
    <li><font size="3" face="Verdana">
  full source code to all modules</font></li>
    <li><font size="3" face="Verdana">
  extended set of java libraries</font></li>
    <li><font size="3" face="Verdana">
  no limit on the
  size of your Java applications</font></li>
    <li><font size="3" face="Verdana">
  customer support</font></li>
    <li><font size="3" face="Verdana">
  consultancy services to
  make porting of the <i>simple</i><b>RTJ</b> to your environment as easy as
  possible</font></li>
    <li><font size="3" face="Verdana">full version of the simpleRTJ Debugger</font></li>
  </ul>

</blockquote>

<p><font face="Verdana" size="3">&nbsp;</font> 

<table border="0" cellpadding="2" width="100%">
  <tr>
    <td width="100%" bgcolor="#CCFFFF"><font face="Verdana"> <strong>Installation</strong></font></td>
  </tr>
</table>

<blockquote>
  <p><font face="Verdana"><b><i>simple</i>RTJ</b></font><font face="Verdana"> is distributed as a
  compressed&nbsp;zip
  archive for use on any host computer platform supporting the Java language.</font></p>
  <p><font face="Verdana"><font color="#800000">To install</font> the </font> <font face="Verdana"><b><i>simple</i>RTJ</b></font><font face="Verdana"> follow these
  steps:</font> <ul>
    <li><font face="Verdana">Copy <b>simplertj-1.4.2.zip</b> into temporary folder on your
      computer.</font></li>
    <li><font face="Verdana">Unzip this file into desired directory. Note that
      all files in the archive will be extracted into simplertj-1.4.0 folder.</font></li>
  </ul>
  <p><font face="Verdana"><font color="#800000">To uninstall</font> the </font><font face="Verdana"><b><i>simple</i>RTJ</b></font><font face="Verdana"> from your
  computer remove (delete) all files from the installation directory.</font></p>
  <p><font face="Verdana">Assuming you have used default installation folder the
  </font><font face="Verdana"><b><i>simple</i>RTJ</b></font><font face="Verdana">
  directory structure will look as follows:</font></p>
  <p><img border="0" src="instdir.png" width="145" height="167"></p>
  <p><font face="Verdana">Where:</font></p>
  <div align="center"><center><table border="1" width="690">
    <tr>
      <td width="151" valign="top" align="left" bgcolor="#FEFFE1"><font face="Verdana"><small>DevelGuide</small></font></td>
      <td width="523" valign="top" align="left" bgcolor="#FEFFE1"><font face="Verdana"><small>Folder
      contains documentation providing the in depth information about the <b><i>simple</i>RTJ</b>.&nbsp;<br>
        The documentation is also available as a separate download
        (simplertj-1.4.2-doc.zip) from our web site.</small></font></td>
    </tr>
    <tr>
      <td width="151" valign="top" align="left" bgcolor="#FEFFE1"><small><font face="Verdana">lib</font></small></td>
      <td width="523" valign="top" align="left" bgcolor="#FEFFE1"><small><font face="Verdana">Includes
      jar files required for building Java applications:</font></small><ul>
        <li><font face="Verdana" size="2">java.jar - java.lang, java.io and java.util packages</font></li>
        <li><font face="Verdana" size="2">javax.jar - javax.events and
          javax.memory packages&nbsp;</font></li>
        <li><font face="Verdana" size="2">ClassLinker.jar - class file linker
          (should be used with JDK1.3 and higher). Only binary image is provided.
          The ClassLinker limits the size of the output images to about 16-19KB.
          Unrestricted version and the source code is available only with the commercially licensed
          <i><b>simple</b></i><b>RTJ</b></font></li>
        <li><font face="Verdana" size="2">template files for the native method
          lookup tables</font></li>
      </ul>
      </td>
    </tr>
    <tr>
      <td width="151" valign="top" align="left" bgcolor="#FEFFE1"><font face="Verdana"><small>lib-source</small></font></td>
      <td width="523" valign="top" align="left" bgcolor="#FEFFE1"><font face="Verdana"><small>Source
      files for building java and javax library jar files.</small></font></td>
    </tr>
    <tr>
      <td width="151" valign="top" align="left" bgcolor="#FEFFE1"><font face="Verdana"><small>projects\MyProject</small></font></td>
      <td width="523" valign="top" align="left" bgcolor="#FEFFE1"><font face="Verdana"><small>Contains
        generic files that can be used as a base for the new Java application
        projects</small></font>
      </td>
    </tr>
    <tr>
      <td width="151" valign="top" align="left" bgcolor="#FEFFE1"><font face="Verdana" size="2">vm-l64k<br>
        vm-b64k<br>
        vm-l16m</font></td>
      <td width="523" valign="top" align="left" bgcolor="#FEFFE1"><font face="Verdana" size="2">Folders
        containing the generic </font><font face="Verdana"><b><small><i>simple</i>RTJ</small></b><small>
        code for three memory models:</small></font>
        <blockquote>
          <p><font face="Verdana"><small>
        - LINEAR 64KB<br>
        - BANKED 64KB<br>
        - LINEAR 16MB (with remote debugging support)</small></font></p>
        </blockquote>
      </td>
    </tr>
  </table>
  </center></div><p><font face="Verdana">It is a good idea to keep the directory structure
  shown above as all batch files expect project files in certain
  directories. If you change the directory structure you will need to modify
  coresponding batch files.<br>
  &nbsp;&nbsp;</font></p>
</blockquote>

<table border="0" cellpadding="2" width="100%">
  <tr>
    <td width="100%" bgcolor="#CCFFFF"><font face="Verdana"> <strong>System requirements</strong></font></td>
  </tr>
</table>

<blockquote>
  <p><font face="Verdana" color="#800000" size="3"><em>Target device</em></font><font
  face="Verdana" color="#800000"> </font><ul>
    <li><font face="Verdana"><small>CPU supporting addressing modes allowing the C
      compiler to generate code for the relatively complex C statements and
      expressions used in the <b><i>simple</i>RTJ</b> code.
      &nbsp;<br>
      &nbsp;&nbsp;</small></font></li>
    <li><small><font face="Verdana">Enough RAM/Flash/EPROM for storing the </font><font face="Verdana"><b><i>simple</i>RTJ</b> 
      code, native methods, system &amp; start-up code as well as your Java
      applications. The required minimum is 48-64KB.</font><font face="Verdana">&nbsp;<br>
      &nbsp;&nbsp; </font></small></li>
    <li><font face="Verdana"><small>Real-time interrupt (RTI) available to support
      multi-threading. If RTI is not available then any other hardware timer
      capable of generating periodic interrupts of 8-20 ms.<br>
      &nbsp;&nbsp;</small> </font></li>
    <li><font face="Verdana"><small>Serial port (with RS232 interface) for upload
      the code from the host computer<br>
      &nbsp;</small></font></li>
    <li><font face="Verdana"><small>For remote debugging the target must support
      one of the communication methods used by the debugger. This may be
      dedicated asynchronous RS-232 port, Ethernet port for connecting to local
      LAN with TCP/IP firmware support. etc.</small></font></li>
  </ul>
  <p><font face="Verdana" color="#800000" size="3"><em>Application development </em></font><ul>
    <li><font face="Verdana"><small>Computer with Windows 98/ME/NT/2000/XP, Linux or any other
      OS supporting the Java language<br>
      &nbsp;</small> </font></li>
    <li><small><font face="Verdana">ANSI C cross-compiler and linker for the
      target processor or microcontroller.</font><font face="Verdana"><br>
      &nbsp; </font></small></li>
    <li><font face="Verdana"><small>JDK 1.3 or higher to compile your java application and to run
      ClassLinker. Other
      development tools that can also be used (i.e. JBuilder).</small></font></li>
  </ul>
  <ul>
    <li><font face="Verdana" color="#000000"><small>Additional tools for
      uploading binary images into the target device</small></font></li>
  </ul>
</blockquote>

<p>&nbsp;</p>

<table border="0" cellpadding="2" width="100%">
  <tr>
    <td width="100%" bgcolor="#CCFFFF"><font face="Verdana"><strong>Additional
      notes</strong></font></td>
  </tr>
</table>

<blockquote>
  <ul>
    <li><font face="Verdana">Read the <a href="DevelGuide.html">Developer's Guide</a> for detailed
      description about the <strong><i>simple</i>RTJ</strong>
      components</font></li>
    <li><font face="Verdana">If you would like to test the <strong><i>simple</i>RTJ<b>
      </b></strong>
      on a host computer then download the demonstration application set for the
      Win32 platform from our web site.&nbsp;</font></li>
    <li><font face="Verdana">To compile your java application files and to run the ClassLinker you must have
      JDK1.3 or higher installed on your computer. Other java development tools
      that are compatible with JDK1.3 can also
      be used.</font></li>
    <li><font face="Verdana">When compiling java files always use <font color="#800000">-bootclasspath</font> command
      line option. This switch will tell the java compiler (javac) to use the java.lang package
      supplied with the <strong><i>simple</i>RTJ</strong> instead of standard one provided
      with the JDK.</font></li>
    <li><font face="Verdana">When using JDK 1.4 or above add <font color="#800000">-target
      1.1</font> command line option for the javac compiler. This will tell the
      compiler to generate class files that are compatible with the simpleRTJ.
      If the <font color="#800000"> -target</font> command line option is omitted
      then the VM might not
      properly interpret java bytecodes.</font></li>
    <li><font face="Verdana">The ClassLinker is available only in a binary form
      (lib/ClassLinker.jar) in this release of <strong><i>simple</i>RTJ</strong>
      and limits the size of the output binary images to about 16-19KB. The full
      version is provided only with the licensed <b><i>simple</i>RTJ</b>.</font></li>
  </ul>
</blockquote>

<p>&nbsp;
<table border="0" cellpadding="2" width="100%">
  <tr>
    <td width="100%" bgcolor="#CCFFFF"><font face="Verdana"><strong>Linux users</strong></font></td>
  </tr>
</table>

<blockquote>
  &nbsp;&nbsp;<br>
  <font face="Verdana">The <b><i>simple</i>RTJ</b> has been setup to be built on a Windows
  platform. In order to develop <b><i>simple</i>RTJ</b> applications on a Linux
  platform you may need to perform the following simple steps:</font>
  <ul>
    <li><font face="Verdana">obtain JDK 1.3 or higher for Linux from Sun's <a href="http://java.sun.com">web
      site</a></font></li>
    <li><font face="Verdana">modify the java application .control file so that
      the LinkClassPath and NativeLookupFile parameters contain forward slashes
      and colons as file and path separators</font></li>
    <li><font face="Verdana">write a simple shell scripts based on appropriate
      .bat files to compile and link the </font><font face="Verdana"><b><i>simple</i>RTJ</b></font><font face="Verdana">
      projects</font></li>
  </ul>
</blockquote>

<p>&nbsp;</p>

<table border="0" cellpadding="2" width="100%">
  <tr>
    <td width="100%" bgcolor="#CCFFFF"><b><font face="Verdana">Reporting
      problems</font></b></td>
  </tr>
</table>

<blockquote>

<p><font face="Verdana">If you discover that any component of the software you
have downloaded demonstrates unexpected or strange behaviour please submit a problem report
using the form provided in the <a href="DevelGuide/ProblemReport.html">Developer's
Guide</a>.</font></p>

<p><font face="Verdana">You can also use this form to provide us with your
suggestions and remarks about various aspects of the <b><i>simple</i>RTJ</b>.
All your comments are welcome as they may helps us to improve the Java Virtual
Machine.</font></p>

</blockquote>

<p>&nbsp;</p>

<table border="0" cellpadding="2" width="100%">
  <tr>
    <td width="100%" bgcolor="#CCFFFF"><font face="Verdana"><strong>History of changes</strong></font></td>
  </tr>
</table>

<blockquote>
  <p align="left"><font face="Verdana"><em>Release 1.4.2 (20 Sep 2003):</em></font></p>
  <blockquote>
    <p align="left"><font face="Verdana" size="2">- Added class instance size
    into class_t structure to support future enhancements to memory allocation
    process.&nbsp;<br>
    - Updated ClassLinker to insert class instance size into output image and
    changed its version to 1.3.2<br>
    - Updated remote debug interface (ver. 1.0.1) to provide support for
    modifying the String and StringBuffer objects. This feature is now supported
    in simpleRTJ Debugger ver. 1.3 and higher.</font></p>
  </blockquote>
  <p align="left"><font face="Verdana"><em>Release 1.4.1 (30 Apr 2003):</em></font></p>
  <blockquote>
    <p align="left"><font face="Verdana" size="2">- Added debug interface
    version number into communication interface to prevent host debugger from
    debugging VM with incorrect comms interface.<br>
    - Added optional idleNotify function declaration into vm_config_t to allow
    native run-time code to receive notifications about VM entering/exiting the
    idle loop.</font></p>
  </blockquote>
  <p align="left"><font face="Verdana"><em>Release 1.4.0 (22 Mar 2003):</em></font></p>
  <blockquote>
    <p align="left"><font size="2" face="Verdana">- Added support for remote
    debugging in LINEAR_16M version. Due to the extended memory and processing
    requirements debug support has not been implemented in other memory model
    versions.<br>
    - Added new functionality to ClassLinker for producing the debug project
    files. ClassLinker version changed to 1.3.0.</font></p>
  </blockquote>
  <p align="left"><font face="Verdana"><em>Release 1.3.3 (3 June 2002):</em></font></p>
  <blockquote>
    <p align="left"><font size="2" face="Verdana">- Fixed problem in j_lang.c
    where Object_clone0 function didn't returned reference to a new clone<br>
    - Fixed problem j_lang.c where Object_wait0 function didn't released all
    locks when entering the wait state<br>
    - Fixed problem where the class lock release function (in j_thread.c)
    resumed any waiting thread and not just the ones waiting on this class'
    lock.<br>
    - ClassLinker version changed to 1.2.3, changes were made to allow
    outputting of the formatted image anywhere in the 30-bit address space
    (currently formatted output could only be placed within the 24-bit address
    space).<br>
    - updated documentation</font></p>
  </blockquote>
  <p align="left"><font face="Verdana"><em>Release 1.3.2 (18 Mar 2002):</em></font></p>
  <blockquote>
  <p align="left"><font size="2" face="Verdana">- Fixed problem in java_lang_Object_clone0
  native method where incorrect number of bytes was copied when cloning objects.<br>
  - Added new memory allocation exception<br>
  - allocHeapMem function modified to throw memory allocation exception to
  prevent potential infinite loop lock in case the memory becomes corrupted<br>
  - modified all make.bat files to include &quot;-target 1.1&quot; javac command
  line argument. This will generate class files compatible with the simpleRTJ
  when using JDK 1.4</font></p>
  </blockquote>
  <p align="left"><font face="Verdana"><em>Release 1.3.1 (18 Dec 2001):</em></font></p>
  <blockquote>
  <p align="left"><font size="2" face="Verdana">- AbstractMap.java updated to fix "class cast" exception (casting to Map.Entry replaced  with
  AbstractMapEntry) - licensed version only<br>
  - fixed potential lockup problem in the thread execution when native method wait0 doesn't  properly release object lock<br>
  - fixed problem in invokeVirt function that couldn't properly detect NoSuchMethod execption<br>
  - fixed potential problem in walkBlock method that could lead to GC lockup when collecting
  multidimensional arrays of objects<br>
  - fixed main method's String[] parameter initialisation in createMainArgs function<br>
  - Updated ClassLinker version to 1.2.2<br>
  - ClassLinker modified to include java.lang.Cloneable and java.io.Serializable interfaces in
  the output image header record<br>
  - Fixed problem in ClassLinker when loading classes with string constants
  located in constant pool at indexes greater than 127<br>
  - updated <i>checkcast</i> and <i>instanceof</i> bytecodes to include checks on arrays for Cloneable and  Serializable interfaces as required by the java specs.<br>
  - All simpleRTJ compilation options are now located in the &quot;javavm.h&quot;&nbsp;<br>
  - For LINEAR_16M memory model ClassLinker expects main method to have a form <b>static void main(String[]
  args)</b> to allow passing of startup arguments. In order to support  this feature native code must setup
  <b>args_count</b> and <b>args</b> members in vm_config_t structure.<br>
  - For LINEAR_16M memory model added <b>getProperty</b> member in vm_config_t structure to provide support  for System.getProperty method.<br>
  - Minimized the latency between registering the hardware event (incrementing an event counters) and  resuming the the Events thread to fire appropriate&nbsp;
  java handler. To get full benefit of this feature&nbsp; native code should call
  <b>vmUpdateEventCounter</b> function in vm_config_t structure instead of direct  modification of the event counters.<br>
  - Build batch files have been updated for using the JDK 1.3 executables.<br>
  - Updated user guide.</font><font face="Tahoma" size="2"><br>
  </font></p>
  </blockquote>
  <p align="left"><font face="Verdana"><em>Release 1.2.3 (8 April 2001):</em></font></p>
  <blockquote>
    <p align="left"><font face="Verdana"><small>- Fixed problem with
    uninitialised count variable in one of java/lang/String constructors<br>
    - Java application verification is now performed at the beginning of
    vmStart&nbsp;<br>
    - More complex </small><small>expressions</small><small> have been
    simplified for proper compilation by certain compilers<br>
    - Improved thread scheduling so that all threads get executed equally if
    there are synchronized methods that lock the threads for longer period of
    time.</small></font></p>
  </blockquote>
  <p align="left"><font face="Verdana"><em>Release 1.2.2 (4 Dec 2000):</em></font></p>
  <blockquote>
    <p align="left"><font face="Verdana"><small>- fixed problem where ClassLinker
    and VM under certain circumstances incorrectly interpreted &quot;wide&quot;
    bytecode prefix.</small></font></p>
  </blockquote>
  <p align="left"><font face="Verdana"><em>Release 1.2.1 (1 July 2000):</em></font></p>
  <blockquote>
    <p align="left"><font face="Verdana"><small>- fixed problem where </small><small>ClassLinker
    generated incomplete method information for abstract methods throwing an
    exception.<br>
    - fixed problem where ClassLinker could under rare code </small><small>circumstances</small><small>
    recognize bytecodes as having wide prefix<br>
    - fixed minor problems in java.lang.Integer class and native code for
    javax.MemoryRegion class&nbsp;</small></font></p>
  </blockquote>
  <p align="left"><font face="Verdana"><em>Release 1.2.0 (25 June 2000):</em></font></p>
  <blockquote>
    <p align="left"><font face="Verdana"><small>- major release that </small><small>introduces</small><small>
    support for the BANKED 64KB memory model<br>
    - three different VM sources are now provided, each for different memory
    model<br>
    - additional </small><small>enhancements</small><small> to the VM and
    ClassLinker for easier porting to&nbsp;<br>
    &nbsp; 32-bit systems requiring strict data alignment on four byte boundary<br>
    - small improvements and optimizations for each memory model<br>
    - updated documentation<br>
    </small></font></p>
  </blockquote>
  <p align="left"><font face="Verdana"><em>Release 1.1.0 (20 May 2000):</em></font></p>
  <blockquote>
    <p align="left"><font face="Verdana"><small>- major release that has been
    updated for running on 32-bit microcontrollers<br>
    - fixed number of data </small><small>alignment</small><small>  issues<br>
    - memory management made more robust<br>
    - added several compilation options (see the Developer's Guide for details)<br>
    - Updated Developer's Guide</small></font></p>
  </blockquote>
  <p align="left"><font face="Verdana"><em>Release 1.0.4 (26 April 2000):</em></font></p>
  <blockquote>
    <p align="left"><font face="Verdana"><small>- fixed malformed extended
    records in the ClassLinker's Intel and Motorola output files.<br>
    </small></font></p>
  </blockquote>
  <p align="left"><font face="Verdana"><em>Release 1.0.3 (25 April 2000):</em></font></p>
  <blockquote>
    <p align="left"><font face="Verdana"><small>- fixed problem causing improper
    invocation of &lt;clinit&gt; methods under certain </small><small>circumstances</small><small><br>
    - improved format of text MAP file generated by ClassLinker for the
    LINEAR_64K memory model<br>
    </small></font></p>
  </blockquote>
  <p align="left"><font face="Verdana"><em>Release 1.0.2 (23 April 2000):</em></font></p>
  <blockquote>
    <p align="left"><font face="Verdana"><small>- new ClassLinker version 1.0.1
    addresses some issues related to 32-bit data alignment for LINEAR_16M memory
    model<br>
    - added new compilation flag ENABLE_ODDADR_READ for processors able to read
    16/32-bit values from odd addresses<br>
    - added number of conditional compilations for LINEAR_16M memory model to
    fix issues with reading of 32-bit values from addresses not multiple of four
    that was causing problems on some 32-bit processors (i.e. ARM).<br>
    - added const modifier to some structures so that their content is placed
    into const memory area<br>
    - all bytecodes accessing 16/32-bit parameters now use GET_PC16/GET_PC32
    macros&nbsp;<br>
    </small></font></p>
  </blockquote>
  <p align="left"><font face="Verdana"><em>Release 1.0.1 (15 April 2000):</em></font></p>
  <blockquote>
    <p align="left"><font face="Verdana"><small>- TimerLimitException in
    javax.events package has been abolished and replaced with
    HandlerLimitException</small></font></p>
  </blockquote>
  <p align="left"><font face="Verdana"><em>Release 1.0.0 (5 April 2000):</em></font></p>
  <blockquote>
    <p align="left"><font face="Verdana"><small>Initial release.</small></font></p>
    <p align="left">&nbsp;</p>
  </blockquote>
</blockquote>
</body>
</html>
